/**
 * 将数字金额转换为中文大写金额
 * @param money 数字金额
 * @returns 中文大写金额
 */
export function convertCurrency(money: number): string {
    // 处理特殊情况
    if (isNaN(money) || money === 0) {
        return '零元整';
    }

    // 处理负数
    const prefix = money < 0 ? '负' : '';
    money = Math.abs(money);

    // 将金额转换为字符串，并确保有两位小数
    const moneyStr = money.toFixed(2);
    const [integer, decimal] = moneyStr.split('.');

    // 数字到中文的映射
    const numToChinese = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    // 整数部分的单位
    const intUnit = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'];
    // 小数部分的单位
    const decUnit = ['角', '分'];

    // 处理整数部分
    let intResult = '';
    let hasZero = false;
    const intLength = integer.length;

    for (let i = 0; i < intLength; i++) {
        const num = parseInt(integer[i]);
        const unit = intUnit[intLength - 1 - i];

        if (num === 0) {
            hasZero = true;
            if (unit === '万' || unit === '亿') {
                intResult += unit;
                hasZero = false;
            }
        } else {
            if (hasZero) {
                intResult += '零';
                hasZero = false;
            }
            intResult += numToChinese[num] + unit;
        }
    }
    intResult += '元';

    // 处理小数部分
    let decResult = '';
    for (let i = 0; i < 2; i++) {
        const num = parseInt(decimal[i]);
        if (num !== 0) {
            decResult += numToChinese[num] + decUnit[i];
        }
    }

    // 如果没有小数部分，添加"整"字
    if (!decResult) {
        intResult += '整';
    }

    return prefix + intResult + decResult;
} 